package com.wrial.kind.linkedList;
/*
 * @Author  Wrial
 * @Date Created in 17:26 2020/8/7
 * @Description
 * 编写一个程序，找到两个单链表相交的起始节点。若不想交就返回null
 */

public class IntersectionNode {

    /**
     *  无论为空还是不为null  都满足 a+c+b=b+c+a
     *  如果两个链表平行的话  a+b = b+a 最后会一块为null，这个时候pA=pB就退出while并返回
     */
    public ListNode getIntersectionNode(ListNode headA, ListNode headB) {
        ListNode pA = headA;
        ListNode pB = headB;

        while (pA != pB) {
            pA = pA == null ? headB : pA.next;
            pB = pB == null ? headA : pB.next;
        }
        return pA;
    }

    class ListNode {
        ListNode(int val) {
            this.val = val;
        }

        int val;
        ListNode next;

    }
}
